var sybnDao = {
  /**
   * 提交插入/更新表单
   * 
   * @param api
   *          提交接头
   * @param from
   *          表单
   * @param replace
   *          true=更新 false=插入
   * @param btns
   *          提交过程中被置灰的按钮
   */
  save : function(api, from, replace, btns, successFun, errorFun) {
    if (btns && btns.length > 0)
      btns.attr('disabled', true);
    var data = from.serialize();
    data += '&replace=' + replace;
    $.ajax({
      type : "POST",
      url : api,
      data : data,
      async : true,
      cache : false,
      xhrFields : {
        withCredentials : true
      },
      success : function(data) {
        if (data.result == true || data.result == 'true') {
          $("#msg").text("操作成功!").show();
        } else {
          $("#msg").text("操作失败").show();
          if (data.msg == "-100") {
            alert("尚未登录");
          } else if (data.msg == "-101") {
            alert("权限不足");
          } else {
            alert(data.msg);
          }
        }
        if (typeof successFun == "function")
          successFun(data);
        if (btns && btns.length > 0)
          $("#updateForm, #saveForm").removeAttr('disabled');
      },
      error : function(request) {
        $("#msg").text("操作失败").show();
        alert("操作失败");
        if (typeof errorFun == "function")
          errorFun();
        if (btns && btns.length > 0)
          $("#updateForm, #saveForm").removeAttr('disabled');
      }
    });
  },
  
  /**
   * 根据ID更新或删除数据
   * 
   * @param api
   *          提交接头
   * @param id
   *          被删除的对象id 或 表单name
   * @todo 暂时没有支持批量删除
   */
  update : function(api, id, msg, successFun, errorFun, datas) {
    if (!confirm('确实要' + msg + '该内容吗?')) {
      return false;
    }
    var data = datas || {
      'id' : id
    };
    $.ajax({
      type : "POST",
      url : api,
      data : data,
      async : true,
      cache : false,
      xhrFields : {
        withCredentials : true
      },
      success : function(data) {
        if (data.result == true || data.result == 'true') {
          $("#msg").text("操作成功!").show();
        } else {
          if (data.msg == "-100") {
            alert("尚未登录");
          } else if (data.msg == "-101") {
            alert("权限不足");
          } else {
            alert(data.msg);
          }
        }
        if (typeof successFun == "function")
          successFun(data);
      },
      error : function(request) {
        $("#msg").text("操作失败").show();
        alert("操作失败");
        if (typeof errorFun == "function")
          errorFun();
      }
    });
  }
}
function sybnValidation(from) {
  var hasError = 0;
  from.find("[required]").each(function() {
    var value = $(this).val();
    if (!value || value == null || value == "") {
      $(this).parents(".input-group").addClass("has-error");
      hasError++;
    } else {
      $(this).parents(".input-group").removeClass("has-error");
    }
  })
  from.find("[pattern]").each(function() {
    var value = $(this).val();
    var pattern = $(this).attr("pattern");
    // TODO
    if (!value || value == null || value.replace(new RegExp(pattern), "") != "") {
      $(this).parent(".input-group").addClass("has-error");
      hasError++;
    } else {
      $(this).parents(".input-group").removeClass("has-error");
    }
  })
  if (hasError > 0) {
    return false;
  } else {
    return true;
  }
}